亚洲精品国产综合久久久久紧,久久99精品久久久久久清纯,人妻无码一区二区三区在线,ぱらだいす天堂中文网WWW

聯(lián)
咨詢熱線:

185-9527-1032

聯(lián)系QQ:

2863379292

官方微信:

微信公眾號(hào)用戶與網(wǎng)站用戶的綁定方案-大連微信開發(fā)

常見問題

導(dǎo)讀:現(xiàn)在很多網(wǎng)站都已經(jīng)建立了一套完整的用戶賬號(hào)體系,基于這套體系,再做其他應(yīng)用的用戶擴(kuò)展就非常方便。例如,有了微軟的outlook賬戶,就可以登錄win8,可以登錄微軟的郵箱,還可以登錄s

發(fā)表日期:2019-09-19

文章編輯:興田科技

瀏覽次數(shù):8542

標(biāo)簽:

微信公眾號(hào)用戶與網(wǎng)站用戶的綁定方案-大連微信開發(fā) 汕頭哪里建網(wǎng)站

現(xiàn)在很多網(wǎng)站都已經(jīng)建立了一套完整的用戶賬號(hào)體系,基于這套體系,再做其他應(yīng)用的用戶擴(kuò)展就非常方便。例如,有了微軟的outlook賬戶,就可以登錄win8,可以登錄微軟的郵箱,還可以登錄skype。同樣地,一個(gè)Apple ID可以享受蘋果的所有服務(wù)。正所謂,一個(gè)賬號(hào),處處使用。

對(duì)于企業(yè),可能會(huì)有產(chǎn)品線通常有網(wǎng)站,app,微信公眾號(hào)等。統(tǒng)一各產(chǎn)品線的賬號(hào)體系,實(shí)現(xiàn)一個(gè)賬號(hào)處處使用的目標(biāo)是非常有必要的。網(wǎng)站和app使用同一個(gè)賬號(hào),不需要做任何多余的工作,客戶只要有用戶名密碼即可登錄。對(duì)于微信公眾號(hào),由于它是基于微信公眾平臺(tái)的一個(gè)應(yīng)用,需要遵守平臺(tái)的規(guī)則,所以需要做一些額外的工作才能達(dá)到賬號(hào)互通的目標(biāo)。

接下來(lái)我們就來(lái)討論一下,如何做到微信公眾號(hào)用戶與網(wǎng)站用戶的賬號(hào)體系無(wú)縫對(duì)接。

當(dāng)用戶關(guān)注微信公眾號(hào)后,會(huì)有一些交互,交互過程中可能需要獲取到用戶的身份信息(對(duì)應(yīng)到網(wǎng)站的賬戶信息),例如在公眾號(hào)中下單,查詢訂單等操作。那么現(xiàn)在問題來(lái)了:對(duì)于同一個(gè)用戶,我們?nèi)绾谓⑽⑿殴娞?hào)用戶(openid)與網(wǎng)站用戶(userid)之間的對(duì)應(yīng)關(guān)系。這個(gè)過程我們稱之為綁定。

微信公眾號(hào)用戶與網(wǎng)站用戶的綁定方案-大連微信開發(fā) 汕頭哪里建網(wǎng)站

微信賬號(hào)綁定

為了簡(jiǎn)化討論,我總結(jié)了這樣兩個(gè)場(chǎng)景:

一、用戶已注冊(cè)成為我們的網(wǎng)站用戶,但還未關(guān)注我們的微信公眾號(hào);

二、用戶未注冊(cè),但已關(guān)注我們的微信公眾號(hào)。

對(duì)于以上兩種情況,下面分別討論。

場(chǎng)景一

用戶已注冊(cè)成為我們的網(wǎng)站用戶,但還未關(guān)注我們的微信公眾號(hào)。如何方便用戶關(guān)注公眾號(hào),同時(shí)又能把用戶和微信公眾號(hào)綁定在一起呢?很自然地就可以想到二維碼這個(gè)入口。

近幾年,二維碼的應(yīng)用特別廣泛。微信對(duì)二維碼的推廣及應(yīng)用可以說是如魚得水,微信二維碼支付,微信二維碼登錄,微信二維碼名片等等??梢哉f,二維碼已經(jīng)成為O2O中連接線上線下的重要紐帶。小馬哥也稱"二維碼是線上線下的一個(gè)關(guān)鍵入口"。

在這里,需要用戶在網(wǎng)站上先登錄,然后在合適的地方給出一個(gè)綁定入口,比如在個(gè)人設(shè)置里。綁定流程如下:

微信公眾號(hào)用戶與網(wǎng)站用戶的綁定方案-大連微信開發(fā) 汕頭哪里建網(wǎng)站

微信賬號(hào)綁定流程

這里需要用到微信的二維碼生成功能:http://mp.weixin.qq.com/wiki/18/28fc21e7ed87bec960651f0ce873ef8a.html

關(guān)于微信二維碼,官方文檔中這樣說:

目前有2種類型的二維碼,分別是臨時(shí)二維碼和永久二維碼,前者有過期時(shí)間,有效期30天(2592000秒),但能夠生成較多數(shù)量,后者無(wú)過期時(shí)間,數(shù)量較少(目前參數(shù)只支持1--100000,即10萬(wàn)個(gè))。兩種二維碼分別適用于帳號(hào)綁定、用戶來(lái)源統(tǒng)計(jì)等場(chǎng)景。

顯然,我們使用臨時(shí)二維碼比較合適。每當(dāng)用戶刷新頁(yè)面時(shí),都可以生成一次。

由于二維碼里可以帶有場(chǎng)景值(scene_id),當(dāng)用戶掃描帶有場(chǎng)景值的二維碼后,微信服務(wù)器會(huì)把場(chǎng)景值推送給我們自己的服務(wù)器,我們拿到場(chǎng)景值后,就可以做驗(yàn)證和綁定邏輯。注意:生成二維碼需要認(rèn)證后的服務(wù)號(hào)。

一次完整的綁定流程應(yīng)該是這樣的:

①用戶登錄網(wǎng)頁(yè),點(diǎn)擊“綁定微信賬戶”;

②后臺(tái)使用微信接口,生成二維碼鏈接返回給前端顯示,并建立場(chǎng)景值A(chǔ)與用戶的對(duì)應(yīng)關(guān)系;

③用戶掃描二維碼,并點(diǎn)擊關(guān)注微信公眾號(hào)(假如已關(guān)注,直接跳到④);

④后臺(tái)接收微信服務(wù)器推送的場(chǎng)景值A(chǔ);

⑤后臺(tái)根據(jù)場(chǎng)景值A(chǔ),查詢到對(duì)應(yīng)的用戶ID(依賴于②中建立的對(duì)應(yīng)關(guān)系);

⑥建立用戶userid與微信用戶openid的對(duì)應(yīng)關(guān)系;

⑦給用戶的微信客戶端推送“綁定成功”的提示;

⑧通知前臺(tái)頁(yè)面,綁定已完成,刷新頁(yè)面,并返回一些微信賬戶信息。完成綁定。

其中,②中,“建立場(chǎng)景值A(chǔ)與用戶之間的對(duì)應(yīng)關(guān)系”,因?yàn)橛脩粢呀?jīng)登錄,所以用戶點(diǎn)擊“綁定微信賬戶”時(shí),我們可以在后臺(tái)分配一個(gè)臨時(shí)場(chǎng)景值A(chǔ)與用戶ID之間的對(duì)于關(guān)系。對(duì)于用戶量不大的網(wǎng)站,可以直接使用php中的apc來(lái)緩存,并設(shè)置一個(gè)過期時(shí)間(與臨時(shí)二維碼過期時(shí)間設(shè)置成一樣即可)。不要使用session來(lái)存儲(chǔ)這種對(duì)應(yīng)關(guān)系,因?yàn)棰苤惺俏⑿诺耐扑褪录?,是不帶session信息的,可以使用redis這類緩存或DB來(lái)存儲(chǔ)。另,這里要使用臨時(shí)二維碼,數(shù)量上沒有限制,只有時(shí)間限制,前臺(tái)定時(shí)刷新即可。

⑧中,因?yàn)閔ttp沒有推送機(jī)制,所以簡(jiǎn)單的方法就是輪詢?nèi)ゲ樵?,是否已?jīng)完成綁定,完成綁定后再刷新頁(yè)面。

完成綁定后,用戶再跟我們的微信公眾號(hào)交互時(shí),根據(jù)openid可以找到對(duì)應(yīng)的userid,即完成身份識(shí)別。對(duì)于之前提到的下單,查詢訂單,都是可以實(shí)現(xiàn)的。

整個(gè)綁定過程并不復(fù)雜,實(shí)現(xiàn)起來(lái)也沒有太大的技術(shù)難度,關(guān)鍵的是思路。

上述流程是用戶已經(jīng)在網(wǎng)頁(yè)端登錄了,也就是說已經(jīng)注冊(cè)用戶。對(duì)于沒有登錄的情況,我們也可以做,在登錄頁(yè)面生成一個(gè)二維碼,讓用戶用微信掃一掃。假如用戶已經(jīng)注冊(cè),則可以自動(dòng)登錄,并完成網(wǎng)站賬號(hào)和微信賬號(hào)的綁定;假如用戶沒有注冊(cè),則網(wǎng)頁(yè)跳轉(zhuǎn)到綁定賬號(hào)頁(yè)面,只要用戶輸入郵箱密碼快速注冊(cè),同時(shí)也完成了網(wǎng)站賬號(hào)和微信用戶的綁定。實(shí)現(xiàn)技術(shù)方案跟上述類似。

場(chǎng)景二

場(chǎng)景二,對(duì)于用戶來(lái)說操作略微復(fù)雜,因?yàn)樗枰脩粼谖⑿趴蛻舳说木W(wǎng)頁(yè)中完成登錄/注冊(cè)。所以,假如注冊(cè)過程太過復(fù)雜繁瑣,不建議使用。

流程:

微信公眾號(hào)用戶與網(wǎng)站用戶的綁定方案-大連微信開發(fā) 汕頭哪里建網(wǎng)站

用戶綁定賬戶流程

上述綁定流程集成了注冊(cè)的過程,所以看起來(lái)比較復(fù)雜。實(shí)現(xiàn)起來(lái)也沒有太大的難度,我們重點(diǎn)關(guān)注一下安全性方面的問題,因?yàn)榻壎ㄙ~戶涉及到用戶的信息安全,考慮兩個(gè)問題:

1、如何防止鏈接被偽造

登錄/注冊(cè)的鏈接需要確保是我們自己的服務(wù)器生成的,其他人無(wú)法偽造??梢詤⒖嘉⑿诺尿?yàn)證服務(wù)器地址的有效性:

http://mp.weixin.qq.com/wiki/17/2d4265491f12608cd170a95559800f2d.html。

所以一個(gè)比較安全的登錄鏈接可以是這樣的:

http://api.hello1010.com/wechat/login.html?openid=x1&signature=x2tamp=x3&nonce=x4&echostr&=x5

校驗(yàn)簽名的代碼:

微信公眾號(hào)用戶與網(wǎng)站用戶的綁定方案-大連微信開發(fā) 汕頭哪里建網(wǎng)站

token值可以跟自己的微信公眾號(hào)后臺(tái)的一致,也可以換一個(gè),建議換一個(gè)安全點(diǎn)。

2、如何確保openid是可信的

考慮這種場(chǎng)景:A用戶進(jìn)入登錄頁(yè)面,復(fù)制登錄鏈接到瀏覽器,把openid替換為B用戶的openid,使用A用戶的賬號(hào)密碼登錄。這樣就把A用戶的userid和B用戶的openid綁定在一起了,顯然是不安全的。

解決方案有很多,比如可以給openid加密,在加密方法保密的情況下,用戶無(wú)法偽造加密后的openid。假如不想給openid加密,可以在生成鏈接時(shí),在服務(wù)器端建立openid與簽名signature的對(duì)應(yīng)關(guān)系,假如用戶篡改了openid就無(wú)法通過校驗(yàn)。

記住,永遠(yuǎn)不要輕信客戶端傳過來(lái)的信息。

擴(kuò)展應(yīng)用

完成綁定后,我們可以做一些簡(jiǎn)單的應(yīng)用。比如,公司需要舉辦一個(gè)線下路演活動(dòng),該活動(dòng)需要報(bào)名才能參加,并且需要簽到。

這是一個(gè)典型的可以用微信實(shí)現(xiàn)的O2O例子。流程如下:

微信公眾號(hào)用戶與網(wǎng)站用戶的綁定方案-大連微信開發(fā) 汕頭哪里建網(wǎng)站

線下路演簽到流程

其中,“綁定用戶子流程”就是場(chǎng)景二中的流程。報(bào)名的交互在這里不再累述,每個(gè)業(yè)務(wù)都不一樣。

對(duì)于一個(gè)已經(jīng)完成綁定的用戶,他參加一個(gè)活動(dòng),需要做的就是通過微信報(bào)名,然后掃描二維碼簽到,體驗(yàn)相當(dāng)流暢。

相關(guān)推薦

更多新聞